package cn.csc.module.shoppingCard.controller.admin.card.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;

import static cn.csc.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
* 购物卡主表 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class CardBaseVO {

    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    private BigInteger projectId;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /**
     * 卡号
     */
    @ApiModelProperty(value = "卡号")
    private String cardNumber;

    /**
     * 绑定的用户ID
     */
    @ApiModelProperty(value = "绑定的用户ID")
    private BigInteger userId;

    /**
     * 用户手机号
     */
    @ApiModelProperty(value = "用户手机号")
    private String userPhone;

    /**
     * 面值
     */
    @ApiModelProperty(value = "面值", required = true)
    private BigDecimal faceValue;

    /**
     * 当前余额
     */
    @ApiModelProperty(value = "当前余额", required = true)
    @NotNull(message = "当前余额不能为空")
    private BigDecimal balance;

    /**
     * 使用限制
     */
    @ApiModelProperty(value = "使用限制")
    private String restriction;

    /**
     * 使用说明
     */
    @ApiModelProperty(value = "使用说明")
    private String comment;

    /**
     * 状态(0-无效，1-有效)
     */
    @ApiModelProperty(value = "状态")
    private Byte status;

    /**
     * 有效期
     */
    @ApiModelProperty(value = "有效期", required = true)
    @NotNull(message = "有效期不能为空")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime expireTime;

    /**
     * 发卡（激活）时间
     */
    @ApiModelProperty(value = "发卡（激活）时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime activatedAt;

}
